package com.fndsoft.zheshangmeap.util;

import java.io.InputStream;
import java.util.List;
import java.util.Random;
import java.util.UUID;

import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;

import com.fndsoft.zheshangmeap.ui.base.BaseApp;

import de.greenrobot.event.EventBus;

/**
 * @author carlos
 * @version 0.1
 * @created 06-Aug-2012 10:15:44 AM
 */
public class ValueUtil extends BaseUtils {

	/**
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2011-11-28 上午6:18:55
	 * @param noteList
	 * @return
	 */
	public static boolean isListNotEmpty(List<?> noteList) {
		return null != noteList && noteList.size() > 0;
	}

	/**
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2011-11-28 上午6:18:55
	 * @param noteList
	 * @return
	 */
	public static boolean isListEmpty(List<?> noteList) {
		return null == noteList || noteList.size() == 0;
	}

	/**
	 * 根据String的资源id,获得字符串
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2012-8-9 下午4:35:30
	 * @param pause
	 * @return
	 */
	public static String getString(int resId) {
		if (null != BaseApp.AppContext) {
			return BaseApp.AppContext.getString(resId);
		}
		return "";
	}

	public static boolean isStrEmpty(String value) {
		if (null == value || "".equals(value.trim())) {
			return true;
		} else {
			// 判断是否全是全角空格
			value = value.replaceAll(" ", "").trim();
			if (null == value || "".equals(value.trim())) {
				return true;
			}
		}
		return false;
	}

	public static boolean isNotEmpty(Object object) {// 不为空方法
		return null != object;
	}

	public static boolean isEmpty(Object object) {// 为空方法
		return null == object;
	}

	public static boolean isStrNotEmpty(String value) {
		if (null == value || "".equals(value.trim())) {
			return false;
		} else {
			// 判断是否全是全角空格
			value = value.replaceAll(" ", "").trim();
			if (null == value || "".equals(value.trim())) {
				return false;
			}
		}
		return true;
	}

	/**
	 * 创建一个uuid
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2012-9-17 下午4:14:07
	 * @return
	 */
	public static String newUUID() {
		return UUID.randomUUID().toString().replace("-", "");
	}

	private static Random random;

	/**
	 * 获取一个随机数
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2013年10月25日 下午12:18:56
	 */
	public static int getIntRandom() {
		if (null == random) {
			random = new Random(100000);
		}
		return random.nextInt();
	}

	/**
	 * 从apk开始截断文件名
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2012-9-25 下午4:56:05
	 * @param fileName
	 * @return
	 */
	public static CharSequence cutFileNameWithOutAPK(String fileName) {
		if (null == fileName || !fileName.contains(".apk")) {
			return fileName;
		}
		return fileName.subSequence(0, fileName.lastIndexOf(".apk"));
	}

	public static long ONLINE_DELAY_CUT_TIME = 0;
	public final static long ONLINE_DELAY_CUT_TIME_DETAULT = 1000 * 60 * 20;

	/**
	 * 这个方法仅用在"友盟有数据"变更"的"调用"
	 * 
	 * @author david
	 * @version 创建时间：2013-9-6 下午1:44:52
	 */
	public static void setOnlineDelayCutTime(String value) {
		if (isStrEmpty(value)) {
			return;
		}
		// 如果友盟有"数据变更"，"转换数据格式"为"Long"并给"内存"同时"保存"本地"
		long online_delay_cut_time = stringToLong(value);
		setOnlineDelayCutTime(online_delay_cut_time);
	}

	/**
	 * 这个方法用在缓存和保存本地
	 * 
	 * @author david
	 * @version 创建时间：2013-9-6 下午4:42:02
	 */
	private static void setOnlineDelayCutTime(long time) {
		if (time <= 0) {
			return;
		}

		// 缓存赋值
		ONLINE_DELAY_CUT_TIME = time;
		// 存在本地
		ReferenceUtils.setString("ONLINE_DELAY_CUT_TIME", time + "");
	}

	/**
	 * 将获得的时间字符串转为Long并返回
	 * 
	 * @author david
	 * @version 创建时间：2013-9-6 下午3:48:09
	 */
	private static long stringToLong(String value) {
		long online_delay_cut_time = 0;
		try {
			online_delay_cut_time = Long.parseLong(value);
		} catch (NumberFormatException e) {
			online_delay_cut_time = 0;
		}
		return online_delay_cut_time;
	}

	/**
	 * 将int转为IP String
	 * 
	 * @auther david 2013-11-6 下午3:46:07 String
	 */
	public static String ipIntToIp(long ipaddress) {
		return (ipaddress & 0xFF) + "." + ((ipaddress >> 8) & 0xFF) + "."
				+ ((ipaddress >> 16) & 0xFF) + "." + (ipaddress >> 24 & 0xFF);
	}

	/**
	 * 是否中文字符
	 * 
	 * @author liujiaqi
	 * @creation time 2014-2-27下午8:26:11
	 * @version
	 * @param c
	 * @return
	 */
	public static boolean isChinese(char c) {
		Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
		if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
				|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
				|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
				|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
				|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
				|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
				|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
			return true;
		}
		return false;
	}

	/**
	 * 是否包含中文
	 * 
	 * @author liujiaqi
	 * @creation time 2014-2-27下午8:25:43
	 * @version
	 * @param text
	 * @return
	 */
	public static boolean isChinese(String text) {
		char[] ch = text.toCharArray();
		for (int i = 0; i < ch.length; i++) {
			char c = ch[i];
			if (isChinese(c)) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 获取dimen的值
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2014年3月23日 上午12:29:07
	 */
	public static int getDimen(int id) {
		return (int) (BaseApp.AppContext.getResources().getDimension(id));
	}

	/**
	 * 获取字符串的资源文件
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2014年3月24日 上午9:21:52
	 */
	public static String[] getStrings(int id) {
		return BaseApp.AppContext.getResources().getStringArray(id);
	}

	/**
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2014年3月24日 上午9:22:28
	 */
	public static ColorStateList getColor(int c6) {
		return BaseApp.AppContext.getResources().getColorStateList(c6);
	}

	/**
	 * 是否数组不为空
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2014年4月16日 上午12:57:20
	 */
	public static boolean isArrayNotEmpty(EventBus[] eventBus) {
		return null != eventBus && eventBus.length > 0;
	}

	/**
	 * 获取资源
	 * 
	 * @author liujiaqi
	 * @creation time 2014-4-17下午4:14:41
	 * @version
	 * @param id
	 * @return
	 */
	public static InputStream getResource(int id) {
		return BaseApp.AppContext.getResources().openRawResource(id);
	}

	/**
	 * 根据Drawable的资源id,获得Drawable
	 * 
	 * @author LiangXiangJu
	 * @creationTime 2014-5-15 上午10:04:02
	 * @version
	 * @param resId
	 * @return
	 */
	public static Drawable getDrawable(int resId) {
		if (null != BaseApp.AppContext) {
			return BaseApp.AppContext.getResources().getDrawable(resId);
		}
		return null;
	}

	/**
	 * 把字符串转换成数值
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2014年5月22日 下午2:36:19
	 * @param id2
	 * @return
	 */
	public static int getInt(String id2) {
		if (ValueUtil.isStrEmpty(id2)) {
			return -1;
		}
		int result = -1;
		try {
			result = Integer.parseInt(id2);
		} catch (NumberFormatException e) {
		}
		return result;
	}
}
